class Solution {
public:
    int minChanges(int n, int k) {
        return (k & ~n) ? -1 : __builtin_popcount(n ^ k);
        return (n | k) != n ? -1 : __builtin_popcount(n ^ k);
        return (n & k) != k ? -1 : __builtin_popcount(n ^ k);
    
    }
};
// class Solution {
// public:
//     int minChanges(int n, int k) {
//         int ret = 0;
//         while(n != 0 || k != 0){
//             int a = n% 2;
//             int b = k %2;
//             if(b > a) return -1;
//             if(a > b) ret++;
//             n /= 2;
//             k /= 2; 
//         }
//         return ret;
//     }
// };